Add method to remove all constraints from a layout
authorEmmanuele Bassi <ebassi@gnome.org>
Sun, 30 Jun 2019 09:30:02 +0000 (10:30 +0100)
committerEmmanuele Bassi <ebassi@gnome.org>
Sun, 30 Jun 2019 23:10:11 +0000 (00:10 +0100)
gtk/gtkconstraintlayout.c
gtk/gtkconstraintlayout.h

index 44554f33f442a999bebefecff1aec20ff9142dc9..b5062f788cc2d49469c6d99bda0894485603d0d0 100644 (file)
@@ -1222,6 +1222,32 @@ gtk_constraint_layout_remove_constraint (GtkConstraintLayout *manager,
   gtk_layout_manager_layout_changed (GTK_LAYOUT_MANAGER (manager));
 }
 
+/**
+ * gtk_constraint_layout_remove_all_constraints:
+ * @manager: a #GtkConstraintLayout
+ *
+ * Removes all constraints from the layout manager.
+ */
+void
+gtk_constraint_layout_remove_all_constraints (GtkConstraintLayout *manager)
+{
+  GHashTableIter iter;
+  gpointer key;
+
+  g_return_if_fail (GTK_IS_CONSTRAINT_LAYOUT (manager));
+
+  g_hash_table_iter_init (&iter, manager->constraints);
+  while (g_hash_table_iter_next (&iter, &key, NULL))
+    {
+      GtkConstraint *constraint = key;
+
+      gtk_constraint_detach (constraint);
+      g_hash_table_iter_remove (&iter);
+    }
+
+  gtk_layout_manager_layout_changed (GTK_LAYOUT_MANAGER (manager));
+}
+
 static void
 gtk_constraint_guide_constraint_target_iface_init (GtkConstraintTargetInterface *iface)
 {
index 227a8bfbc75d177917adf946266c74312979fa54..5294ec74a45840dfd36b5fef69f130a7667c660e 100644 (file)
@@ -75,6 +75,8 @@ void                    gtk_constraint_layout_add_guide         (GtkConstraintLa
 GDK_AVAILABLE_IN_ALL
 void                    gtk_constraint_layout_remove_guide      (GtkConstraintLayout *manager,
                                                                  GtkConstraintGuide  *guide);
+GDK_AVAILABLE_IN_ALL
+void                    gtk_constraint_layout_remove_all_constraints            (GtkConstraintLayout *manager);
 
 GDK_AVAILABLE_IN_ALL
 gboolean                gtk_constraint_layout_add_constraints_from_description  (GtkConstraintLayout *manager,